#include "GY_StateToolButton.h"

GY_StateToolButton::GY_StateToolButton(QWidget *parent)
    : QToolButton(parent)
{
    setCheckable(true); //设置按钮可勾选
    setChecked(false);
    connect(this,&GY_StateToolButton::clicked,this,&GY_StateToolButton::rcvClicked);
}

/**
 * @brief setButtonGroupValue 设置组号
 * @param groupId 组号
 */
void GY_StateToolButton::setButtonGroupValue(const QVariant groupId)
{
    m_groupId = groupId;
    GY_GroupControl::addGroupMember(groupId,this,"changeButtonState");
}

/**
 * @brief setButtonState 设置按钮互斥状态
 */
void GY_StateToolButton::setButtonExclusiveState(const bool ischecked)
{
    if(ischecked)
    {
        setCheckable(ischecked); //设置按钮可勾选
        setChecked(false);
    }
}

/**
 * @brief changeButtonState 改变按钮按下状态
 */
void GY_StateToolButton::changeButtonState()
{
    if(this->isChecked()) //如果当前按钮被勾选了，就取消勾选
    {
        this->setChecked(false); //取消按下
        emit sendButtonStateChanged(this);
    }
}

/**
 * @brief rcvClicked 点击响应
 * @param isChecked 是否点击
 */
void GY_StateToolButton::rcvClicked(bool isClicked)
{
    if(isClicked) //是否点击
    {
        emit GY_GroupControl::emitEvent(m_groupId,this);
        emit sendButtonInfo(this); //发送按钮信息
    }
}
